#-*- codeing = utf-8 -*-
#@Time : 2020/9/13 12:46
#@Author : 阳某
#@File : 多任务协程.py
#@Software : PyCharm
import requests
import asyncio      #异步模块
from fake_useragent import UserAgent
import time

async def reques(url):
    print('正在请求的url是：',url)
    # 当在多任务异步协程中出现了同步模块相关的代码，那么就无法实现异步操作
    # time.sleep(2)
    # 当在asyncio中出现了阻塞操作，必须进行手动挂起
    await asyncio.sleep(2)
    print('请求成功：',url)
urls = [
    'www.baidu.com',
    'www.sogou.com',
    'www.goubanjia.com',
]
start = time.time()
stasks = []     #任务列表：存放多个任务对象
for url in urls:
    # 创建协程对象
    c = reques(url)
    # 创建任务对象
    task = asyncio.ensure_future(c)
    stasks.append(task)
# 创建一个事件循环对象loop
loop = asyncio.get_event_loop()
# 需要将任务列表封装到wait中
loop.run_until_complete(asyncio.wait(stasks))
print(time.time()-start)    #多任务异步2s


'''
async def reques(url):
    print('正在请求的url是：',url)
    time.sleep(2)
    print('请求成功：',url)
urls = [
    'www.baidu.com',
    'www.sogou.com',
    'www.goubanjia.com',
]
start = time.time()
stasks = []     #任务列表：存放多个任务对象
for url in urls:
    # 创建协程对象
    c = reques(url)
    # 创建任务对象
    task = asyncio.ensure_future(c)
    stasks.append(task)
# 创建一个事件循环对象loop
loop = asyncio.get_event_loop()
# 需要将任务列表封装到wait中
loop.run_until_complete(asyncio.wait(stasks))
print(time.time()-start)    #同步多任务6s
'''